package com.unitd.base.module.shoe.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Maps;
import com.unitd.base.frame.plugin.db.datasource.annotion.DataSource;
import com.unitd.base.module.shoe.mybatis.mapper.CustomerOrderMapper;
import com.unitd.base.module.shoe.pojo.po.CustomerOrderPO;
import com.unitd.base.module.shoe.service.OrderService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

/**
 * SQLServer 数据库对应的商品信息业务逻辑实现类
 *
 * @author Goods
 * @version 1.0
 * @filename GoodsServiceImpl.java
 * @copyright www.pactera.com
 * @date 2020-08-27
 */
@Slf4j
@Service
public class OrderServiceImpl extends ServiceImpl<CustomerOrderMapper, CustomerOrderPO> implements OrderService {

    /**
     * 根据条件查询商品列表
     *
     * @param param 商品查询条件
     * @return 商品列表
     */
    public List<CustomerOrderPO> selectByBean(Map<String, Object> param) {
        return baseMapper.selectByMap(param);
    }

    /**
     * 根据orderId更新blocked
     *
     * @param orderId 订单编号
     * @param blocked 订单状态（0未锁定，1锁定）
     * @return 商品列表
     */
    public int updateBlocked(String orderId, String blocked) {

        Map<String, Object> param = Maps.newHashMap();
        param.put("f1927", orderId);
        List<CustomerOrderPO> pos = baseMapper.selectByMap(param);
        CustomerOrderPO po = pos.get(0);
        po.setBlocked(blocked);
        return baseMapper.updateById(po);
    }

    /**
     * 根据条件查询商品列表
     *
     * @param customerOrderPO 商品查询条件
     * @return 商品列表
     */
    public int insertCustomerOrderPO(CustomerOrderPO customerOrderPO) {
        return baseMapper.insert(customerOrderPO);
    }

    /**
     * 根据条件查询商品列表
     *
     * @param datasource      需要读取的数据名称
     * @param customerOrderPO 商品查询条件
     * @return 商品列表
     */
    @DataSource(name = "datasource")
    public int insertCustomerOrderPO(String datasource, CustomerOrderPO customerOrderPO) {
        return insertCustomerOrderPO(customerOrderPO);
    }

    /**
     * 根据条件查询订单信息
     *
     * @param orderNo 订单编号
     * @return 订单信息
     */
    public CustomerOrderPO selectByOrderNo(String orderNo) {
        return baseMapper.selectByOrderNo(orderNo);
    }

    /**
     * 根据条件查询订单信息
     *
     * @return 订单信息
     */
    public List<CustomerOrderPO> selectToBeConfirmed() {
        return baseMapper.selectToBeConfirmed();
    }

    /**
     * 根据条件查询订单信息
     *
     * @return 订单信息
     */
    public List<CustomerOrderPO> selectConfirmed() {
        return baseMapper.selectConfirmed();
    }

    /**
     * 根据条件查询订单信息
     *
     * @return 订单信息
     */
    public List<CustomerOrderPO> selectAll() {
        return baseMapper.selectAll();
    }
}